package managedbeam;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import org.primefaces.context.RequestContext;

import repositorio.Repositorio_cliente;
import classes_basicas.Cliente;
import classes_basicas.Endereco;
import fachada.Fachada;


@ManagedBean
@SessionScoped
public class ClienteBean {

	
	Fachada f = new Fachada();
	private Cliente cliente;
	private List<Cliente> clientes;
	private List<Cliente> clientesfiltro;
	private Endereco endereco;
	private String login;
	private String senha;

	public ClienteBean() {
		
		this.cliente = new Cliente();
		this.endereco = new Endereco();
		
	}
	public void resetcadastro(){
		  RequestContext.getCurrentInstance().reset("form2:lk");  
		  
	}
	public String salvar() throws Exception {
		  RequestContext context = RequestContext.getCurrentInstance();  
		FacesMessage msg = null;  
		boolean cadastrado = false;
		cliente.setEndereco(endereco);
		try{
		f.inserircliente(cliente);
		  msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cadastrado com sucesso! Cliente", cliente.getNome()); 
		  FacesContext.getCurrentInstance().addMessage(null, msg); 
		  cadastrado=true;
		  context.addCallbackParam("cadastrou", cadastrado); 
		  resetcadastro();
		}catch(Exception e){
			
			 msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao Cadastrar", e.getMessage());
			 FacesContext.getCurrentInstance().addMessage(null, msg); }
		return null;
	}

	public String novo() {
		cliente = new Cliente();
		return "formularioCliente";
	}

	public String editar() {
		return "formularioCliente";
	}

	public String remover() throws Exception {
		// REMOVER CLIENTE
		f.removercliente(cliente);

		return null;
	}

	public Cliente getCliente() {

		return cliente;

	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public List<Cliente> getClientes() throws Exception {
		Repositorio_cliente repc = new Repositorio_cliente();
		this.clientes = repc.listartodos();
		return this.clientes;
	}

	public void setClientes(List<Cliente> clientes) {
		this.clientes = clientes;
	}

	public Endereco getEndereco() {
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}
	public List<Cliente> getClientesfiltro() {
		return clientesfiltro;
	}
	public void setClientesfiltro(List<Cliente> clientesfiltro) {
		this.clientesfiltro = clientesfiltro;
	}
	
	
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	
}
